/******************************************************************************

  File Name     : alg_face_recognition.h
  Version       : Initial Draft
  Author        : tongzhilin
  Created       : 2020/8/6
  Last Modified :
  Description   : alg_face_feature_v1
  Function List :
  History       :
  1.Date        : 2020/8/6
    Author      : tongzhilin
    Modification: Created file

******************************************************************************/
#pragma once
#include "mx_algbasic.h"

class FacelmkV1 : public MxAlgBasic
{
public:
    FacelmkV1(const char* _pJsonFile, const char* _pParamsFile);
    virtual ~FacelmkV1();
    /*
    ** result type ALG_RECT_RESULT_S
    */
    INT32 alg_run_image(ALG_IMAGE_S* _pstImage, INT32 _s32MaxRet, void *_pstResult);
protected:
    bool  ab_image_post();

private:
    const INT32 m_s32DeviceType = 2;        // 1 cpu;2 gpu
    const INT32 m_s32DeviceId = 0;          // gpu id
    const INT32 m_s32InputBlobNum = 1;
    const INT32 m_s32OutputBlobNum = 2;
    const INT32 m_s32InputN = 1;
    const INT32 m_s32InputC = 3;
    const INT32 m_s32InputH = 112;
    const INT32 m_s32InputW = 112;

    const float m_fInputMean0 = 128.f;
    const float m_fInputMean1 = 128.f;
    const float m_fInputMean2 = 128.f;
    const float m_fInputStd = 128.f;
    
    //std::vector<ALG_FACELMK_RESULT_S> m_stvFaceLmkResult;
    float                   m_f32ScalX;
    float                   m_f32ScalY;
    ALG_FACELMK_RESULT_S    *m_pstFaceLmkResult;
};

